
package org.apache.ibatis.plugin;

import java.util.Properties;

/**
 * mybatis拦截器接口，Plugin的实现依赖于此
 * @author Clinton Begin
 */
public interface Interceptor {
  /**
   * Mybatis拦截器方法
   *
   * @param invocation 拦截器入参
   * @return 返回执行结果
   * @throws Throwable 抛出异常
   */
  Object intercept(Invocation invocation) throws Throwable;

  // 选择拦截哪一种类型的操作.在InterceptorChain中处理
  // Plugin.wrap(target, this);达到使用interceptor拦截的目的
  Object plugin(Object target);

  //设置属性值。在buildSqlSessionFactory的时候做
  void setProperties(Properties properties);

}
